# -*- coding: utf-8 -*-
# author yzs
# date 2019-02-23
#
# 实现Shell排序
# Description
# 实现Shell排序，对给定的无序数组，按照给定的间隔变化（间隔大小即同组数字index的差），打印排序结果，注意不一定是最终排序结果！
# Input
# 输入第一行表示测试用例个数，后面为测试用例，每一个用例有两行，第一行为给定数组，第二行为指定间隔，每一个间隔用空格隔开。
# Output
# 输出的每一行为一个用例对应的指定排序结果。
# Sample Input 1
# 1
# 49 38 65 97 76 13 27 49 55 4
# 5 3
# Sample Output 1
# 13 4 49 38 27 49 55 65 97 76


def shell_sort(a, gaps):
    n = len(a)
    m = len(gaps)
    for k in range(m):
        gap = gaps[k]
        for i in range(gap, n):
            for j in range(i, gap-1, -gap):
                if a[j] < a[j - gap]:
                    a[j], a[j - gap] = a[j - gap], a[j]
                else:
                    break
    print(" ".join(str(i) for i in data))


t = int(input().strip())
for i in range(t):
    data = list(map(int, input().strip().split()))
    gaps = list(map(int, input().strip().split()))
    shell_sort(data, gaps)
